Docker 核心概念和分层机制
1 Docker 核心概念
Docker 有三个核心概念,分别是:
- 镜像(Image)。
- 容器(Container)。
- 仓库(Repository)。
1.1 Docker 镜像
- Docker 镜像类似于虚拟机镜像,可以简单理解为一个模板。
- Docker 镜像是创建Docker容器的基础。
- 通过版本管理和增量的文件系统,非常简便创建和更新 Docker 镜像。
- 用户可以直接从网络上下载一个做好的 Docker 镜像。
1.2 Docker 容器
1、Docker 容器和沙箱很相似,容器拥有独立的、隔离的虚拟 Linux 环境。
2、容器可以看做是一个简易版的 Linux 系统环境。
3. 下图是 Docker 容器 和 Docker 镜像 之间的关系图。
1.3 Docker 仓库
- Docker 仓库类似代码仓库,可以集中存放镜像文件。
Docker 仓库
和仓库注册服务器
- 仓库注册服务器是存放仓库的位置。
- 一个注册服务器存放这多个仓库。‘
3、例如存放 Ubuntu 操作系统的镜像仓库称为 Ubuntu 仓库,其中包含 14.04
、12.04 等不同版本的进项。
4、根据镜像是否分享,Docker 仓库可以分为公开仓库(public)
和私有仓库(private)
。
5、最大的公开仓库是官方提供的 Docker Hub。
6、国内网易云也提供了仓库的本地化。
Note
Docker 仓库管理镜像与GIT 非常相似。
2 Docker 的分层机制
Docker 分层机制能够大大提高容器的启动速度。
- Docker 运行容器时,会使用写时复制机制(copy-on-write)减少所需的硬盘空间。
- 当一个运行的容器需要写入一个文件时,将该文件复制到磁盘的一个新区域。
- 在执行Docker 提交时,将会把这块磁盘的区域冻结并记录为自身标识符的一个层。
2.1 什么是写时复制
- 写时复制时计算机技术中使用的一种标准的优化策略。
- 从一个镜像创建一个新的容器时,当数据发生变化时才复制一一个层,而不是复制整个所需的数据集。
- 这样能够节省很多磁盘空间。
2.2 什么是层?
- 层是指一些变化的块的合集。
- 层是静态的,所以用户只需要在引用的镜像上构建。
- 以下图示说明了我们可以从公开可用的
node
镜像构建,并将变更的内容放在最上层。
- 上面的三层都可以被多个容器所共享,就像共享内存能够被多个进程访问。
- 这样可以再本地机器上启动多个不同的环境。能够运行更多的容器从而保证磁盘空间不会被大量消耗。